home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / sun / print / ServiceNotifier.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  2.4 KB  |  103 lines

  1. package sun.print;
  2.  
  3. import java.util.Vector;
  4. import javax.print.PrintService;
  5. import javax.print.attribute.HashPrintServiceAttributeSet;
  6. import javax.print.attribute.PrintServiceAttributeSet;
  7. import javax.print.event.PrintServiceAttributeEvent;
  8. import javax.print.event.PrintServiceAttributeListener;
  9.  
  10. class ServiceNotifier extends Thread {
  11.    private PrintService service;
  12.    private Vector listeners;
  13.    private boolean stop = false;
  14.    private PrintServiceAttributeSet lastSet;
  15.  
  16.    ServiceNotifier(PrintService var1) {
  17.       super(var1.getName() + " notifier");
  18.       this.service = var1;
  19.       this.listeners = new Vector();
  20.  
  21.       try {
  22.          this.setPriority(4);
  23.          this.setDaemon(true);
  24.          this.start();
  25.       } catch (SecurityException var3) {
  26.       }
  27.  
  28.    }
  29.  
  30.    void addListener(PrintServiceAttributeListener var1) {
  31.       synchronized(this) {
  32.          if (var1 != null && this.listeners != null) {
  33.             this.listeners.add(var1);
  34.          }
  35.       }
  36.    }
  37.  
  38.    void removeListener(PrintServiceAttributeListener var1) {
  39.       synchronized(this) {
  40.          if (var1 != null && this.listeners != null) {
  41.             this.listeners.remove(var1);
  42.          }
  43.       }
  44.    }
  45.  
  46.    boolean isEmpty() {
  47.       return this.listeners == null || this.listeners.isEmpty();
  48.    }
  49.  
  50.    void stopNotifier() {
  51.       this.stop = true;
  52.    }
  53.  
  54.    void wake() {
  55.       try {
  56.          this.interrupt();
  57.       } catch (SecurityException var2) {
  58.       }
  59.  
  60.    }
  61.  
  62.    public void run() {
  63.       long var1 = 15000L;
  64.       long var3 = 2000L;
  65.  
  66.       while(!this.stop) {
  67.          try {
  68.             Thread.sleep(var3);
  69.          } catch (InterruptedException var14) {
  70.          }
  71.  
  72.          synchronized(this) {
  73.             if (this.listeners != null) {
  74.                long var10 = System.currentTimeMillis();
  75.                if (this.listeners != null) {
  76.                   PrintServiceAttributeSet var8;
  77.                   if (this.service instanceof AttributeUpdater) {
  78.                      var8 = ((AttributeUpdater)this.service).getUpdatedAttributes();
  79.                   } else {
  80.                      var8 = this.service.getAttributes();
  81.                   }
  82.  
  83.                   if (var8 != null && !var8.isEmpty()) {
  84.                      for(int var12 = 0; var12 < this.listeners.size(); ++var12) {
  85.                         PrintServiceAttributeListener var7 = (PrintServiceAttributeListener)this.listeners.elementAt(var12);
  86.                         HashPrintServiceAttributeSet var5 = new HashPrintServiceAttributeSet(var8);
  87.                         PrintServiceAttributeEvent var6 = new PrintServiceAttributeEvent(this.service, var5);
  88.                         var7.attributeUpdate(var6);
  89.                      }
  90.                   }
  91.                }
  92.  
  93.                var3 = (System.currentTimeMillis() - var10) * 10L;
  94.                if (var3 < var1) {
  95.                   var3 = var1;
  96.                }
  97.             }
  98.          }
  99.       }
  100.  
  101.    }
  102. }
  103.